<?php

include_once 'Conexion.php';

class Nota extends Conexion{
    public $idNota;
    public $idCliente;
    public $tipo;
    public $fecha;
    public $numNota;
    public $montoNota;
    public $cancelada;
    
    public function __construct($idCliente, $tipo, $fecha, $numNota, $cancel) {
        $this->idCliente = $idCliente;
        $this->tipo = $tipo;
        $this->fecha = $fecha;
        $this->numNota = $numNota;
        $this->cancelada = $cancel;
    }
    
    public function registrar (Nota $nueva) {
        parent::conectar();

        $query = "INSERT INTO `nota`(`IDCLIENTE`, `TIPO`, `FECHA`, `NUMNOTA`, `CANCELADA`,`IDRAZONSOCIAL`) 
                        VALUES ($nueva->idCliente, '$nueva->tipo', '$nueva->fecha', $nueva->numNota, $nueva->cancelada, 6)";

        $resul = parent::ejecutarQuery($query);

        parent::desconectar();

        return $resul;
    }
    
    public function obtenerTotalNotas () {
        parent::conectar();
        
        $query = $this->ejecutarConsulta("SELECT SUM(montoNota) FROM `nota` WHERE cancelada=0");

        $row = mysql_fetch_array($query);
            
        if (!$row) {
            $total = 0;
        } else {
            $total = $row[0];
        }

        parent::desconectar();

        return $total * 1.16;
    }
    
    public function getAllNotas () {
        parent::conectar();
        
        $query = "SELECT idnota, montonota, fecha, numnota, nombre 
                    FROM nota JOIN cliente ON nota.idcliente=cliente.idcliente 
                        JOIN razonsocial ON cliente.idrazonsocial=razonsocial.idrazonsocial 
                            WHERE cancelada=0";

        $sqlResult = $this->ejecutarConsulta($query);
        
        parent::desconectar();
        
        return $sqlResult;
    }
    
    //Regresa las Notas para el Reporte desglosado
    public function getNotasReporte ($mes, $anio) {
        
        $this->conectar();

        $sql = "SELECT numNota, montoNota, fecha FROM nota WHERE cancelada=0 AND fecha>='$anio-$mes-01' AND fecha<'". ($mes == 12 ? ($anio+1) : $anio) ."-". ($mes == 12 ? 1 : $mes + 1) ."-01' ORDER BY fecha";

        $sqlResult = $this->ejecutarConsulta($sql);

        $this->desconectar();

        return $sqlResult;
    }
    
    public function obtenerIdNota ($numNota) {
        parent::conectar();
        
        $query = "SELECT idNota FROM `nota` WHERE numnota=$numNota";
        
        $row = mysql_fetch_array(parent::ejecutarConsulta($query));
        
        if (!$row) {
            $this->idNota = 0;
        } else {
            $this->idNota = $row[0];
        }
        
        parent::desconectar();
        
        return $this->idNota;
    }


    public function obtenerNotasDeFactura ($idFactura) {
        parent::conectar();
        
        $query = "SELECT numNota, montoNota, fecha, tipo FROM factura, conceptocontable, nota WHERE factura.idFactura = conceptocontable.idFactura 
                        AND conceptocontable.idconceptocontable=nota.idconceptocontable AND factura.idFactura=$idFactura";

        $sqlResult = $this->ejecutarConsulta($query);

        $this->desconectar();

        return $sqlResult;
    }
    
    public function obtenerMontoNotas ($idFactura, $tipo) {
        parent::conectar();
        
        $query = "SELECT montoNota FROM factura, conceptocontable, nota WHERE factura.idFactura = conceptocontable.idFactura 
                        AND conceptocontable.idconceptocontable = nota.idconceptocontable AND factura.idFactura=$idFactura AND tipo =  '$tipo'";

        $sqlResult = $this->ejecutarConsulta($query);

        $this->desconectar();

        //Verificamos que la consulta haya retornada alguna fila
        if ($sqlResult == false) {
            
            //Si no retorno nada, regresamos 0
            return 0;
        } else {

            //En caso contrario recorremos la matriz y sumanos los montos para conseguir el totol
            $acum = 0;

            while ($arrMontos = mysql_fetch_array($sqlResult)) {
                $montoTemp = $arrMontos;

                $acum = $acum + $montoTemp['montoNota'];
            }

            return $acum;
        }
    }
    
    public function getIdNota() {
        return $this->idNota;
    }

    public function setIdNota($idNota) {
        $this->idNota = $idNota;
    }

    public function getIdCliente() {
        return $this->idCliente;
    }

    public function setIdCliente($idCliente) {
        $this->idCliente = $idCliente;
    }

    public function getTipo() {
        return $this->tipo;
    }

    public function setTipo($tipo) {
        $this->tipo = $tipo;
    }

    public function setFecha($fecha) {
        $this->fecha = $fecha;
    }

    public function getNumNota() {
        return $this->numNota;
    }

    public function setNumNota($numNota) {
        $this->numNota = $numNota;
    }

    public function getMontoNota() {
        return $this->montoNota;
    }

    public function setMontoNota($idNota, $montoNota) {
        $this->conectar();
        
        $resul = $this->ejecutarQuery("UPDATE `nota` SET `MONTONOTA`=$montoNota WHERE idNota=$idNota");
        
        $this->desconectar();
        
        return $resul;        
    }
}
?>